package com.delio.client.produccion.detallevalesalidas;

import java.util.List;

import com.extjs.gxt.ui.client.data.BaseFilterPagingLoadConfig;
import com.extjs.gxt.ui.client.data.BaseListLoader;
import com.extjs.gxt.ui.client.data.BasePagingLoadConfig;
import com.extjs.gxt.ui.client.data.BasePagingLoader;
import com.extjs.gxt.ui.client.data.BeanModelReader;
import com.extjs.gxt.ui.client.data.FilterPagingLoadConfig;
import com.extjs.gxt.ui.client.data.ListLoadResult;
import com.extjs.gxt.ui.client.data.ListLoader;
import com.extjs.gxt.ui.client.data.ModelData;
import com.extjs.gxt.ui.client.data.PagingLoadResult;
import com.extjs.gxt.ui.client.data.PagingLoader;
import com.extjs.gxt.ui.client.data.RpcProxy;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.widget.MessageBox;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;

public class DetalleValeSalidas {
	
	private static DetalleValeSalidaServiceAsync dvss = GWT.create(DetalleValeSalidaService.class);
    public static ListStore<ModelData> store;
    public static ListStore<ModelData> storeCombo;
    public static PagingLoader<PagingLoadResult<ModelData>> loader;
    public static ListLoader<ListLoadResult<ModelData>> loaderCombo;
	public static Integer valesalida_id;
	public static Integer detallevalesalida_id;
	
	public static void getPaginate() {
			RpcProxy<PagingLoadResult<DetalleValeSalida>> proxy = new RpcProxy<PagingLoadResult<DetalleValeSalida>>() {

				@Override
				protected void load(Object loadConfig,
				    AsyncCallback<PagingLoadResult<DetalleValeSalida>> callback) {
					dvss.paginateDetalleValeSalida((FilterPagingLoadConfig) loadConfig, valesalida_id, callback);
				}  
		    };
		    loader = new BasePagingLoader<PagingLoadResult<ModelData>>(proxy, new BeanModelReader()){  
		        @Override  
		        protected Object newLoadConfig() {  
		          BasePagingLoadConfig config = new BaseFilterPagingLoadConfig();  
		          return config;  
		        }  
		      };  
	        loader.setRemoteSort(true);  
	        store = new ListStore<ModelData>(loader);
	 }
	 
	 
	  public static void getStore(){
			
		 RpcProxy<List<DetalleValeSalida>> proxy = new RpcProxy<List<DetalleValeSalida>>(){
		    protected void load(Object loadConfig, AsyncCallback<List<DetalleValeSalida>> callback){
			    dvss.ListarDetalleValeSalidas(callback);
			 }
		  	};
		 loaderCombo = new BaseListLoader<ListLoadResult<ModelData>>(proxy, new BeanModelReader());
		 storeCombo = new ListStore<ModelData>(loaderCombo);
		 loaderCombo.load();
		  
	}
	    
	  public static void listardireccionclienteCombo(){
	      RpcProxy<List<DetalleValeSalida>> proxy = new RpcProxy<List<DetalleValeSalida>>(){
	    		    protected void load(Object loadConfig, AsyncCallback<List<DetalleValeSalida>> callback){
	    		       dvss.ListarDetalleValeSalidas(callback);
	    			 }
	    		  	};
	    	  	loaderCombo = new BaseListLoader<ListLoadResult<ModelData>>(proxy, new BeanModelReader());  
	    	    storeCombo = new ListStore<ModelData>(loaderCombo);	
	      
	    }
	    
		public static void guardar(final DetalleValeSalida dvs){
		 dvss.guardar(dvs, new AsyncCallback<Boolean>(){

			@Override
			public void onFailure(Throwable caught) {
				MessageBox.alert("Error", "No pudo guardar", null);			
			}

			@Override
			public void onSuccess(Boolean result) {
	           if(!result)
	           	MessageBox.alert("Error", "No se guardo correctamente", null);
			}
		 });
	   }
	  
		public static void actualizar(DetalleValeSalida dvs){
		 dvss.actualizar(dvs, new AsyncCallback<Boolean>(){

		   @Override
		   public void onFailure(Throwable caught) {
			   MessageBox.alert("Error", "Error en la acutalizacion", null);	 
		   }	
			 
		   public void onSuccess(Boolean result){
			 if(result){
			   MessageBox.alert("Actualizado","Se actualizo Correctamente", null);
			 }else{
			   MessageBox.alert("Error", "No se actualizo Correctamente", null);	 
			 }
			}

		 });
	 }
	 
	 public static void eliminar(Integer id){
	     dvss.eliminar(id, new AsyncCallback<Boolean>(){
			
			 @Override
			 public void onFailure(Throwable caught){
				 MessageBox.alert("Error", "Error en la Eliminacion", null);
			 }
			 
			 public void onSuccess(Boolean result){
				 if(result){
				   MessageBox.alert("Eliminado","Se elimino Correctamente", null); 
				 }else{
				   MessageBox.alert("Error", "No se elimino Correctamente", null);	 
				 } 
			 }

		 });
	 }
}
